package com.myworld.rabbitmq;

import com.myworld.config.mq.rabbit.RabbitmqConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
@RunWith(SpringRunner.class)
public class Producer_topics_springboot {
    @Autowired
    RabbitTemplate rabbitTemplate;

    /**
     * 说明：在rabbitMQ中，生成者不需要设置队列,消费者通过队列与路由绑定，相同路由的消费者队列名不能相同，否则相同队列的消费者只有一个消费该消息,
     *      可以启动两个服务器查看消费情况
     * topic 模式发送消息
     */
    @Test
    public void testSendByTopics(){
        for (int i=0;i<5;i++){
            String message = "sms email inform to user"+i;
            /**
             * 参数一：交换机的名称
             * 参数二：路由key
             * 参数三：消息
             */
            rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_TOPICS_INFORM,"inform.sms.email",message);
            System.out.println("Send Message is:'" + message + "'");
        }
    }
}
